package com.mmy.service.impl.hotel;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONObject;
import com.mmy.dao.hotel.THotelBaseRepository;
import com.mmy.dao.hotel.VHotelBaseRepository;
import com.mmy.domain.hotel.VHotelBase;
import com.mmy.mapper.HotelDao;
import com.mmy.service.ServiceCommon;
import com.mmy.service.hotel.HotelBaseService;

@Service
public class HotelBaseServiceImpl implements HotelBaseService {
	@Autowired
	THotelBaseRepository tHotelBaseRepository;
	@Autowired
	VHotelBaseRepository vHotelBaseRepository;
	@Autowired
	ServiceCommon common;
	@Autowired
	HotelDao hotelDao;

	/**
	 * 函数功能说明：前台景点菜单显示信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人hanxl
	 * @param pageSize
	 * @param pageNumber
	 * @param iZoneID
	 * @param strScenicName
	 * @date 创建日期2021.03.02
	 */
	public List<VHotelBase> findBySearch(String pageNumber, String pageSize, List<Integer> lstHotelID, int iZoneID,
			String strHotelName) {
		int iPageSize = 0;
		int iTempPageNo = 0;
		if (strHotelName == null) {
			strHotelName = "";
		}
		if (pageNumber == null) {
			pageNumber = "1";
		}
		if (pageSize == null) {
			iPageSize = 20;
		} else {
			iPageSize = Integer.valueOf(pageSize);
			iTempPageNo = (Integer.valueOf(pageNumber) - 1) * iPageSize;
		}
		List<VHotelBase> lstHotelBase = vHotelBaseRepository.findBySearch(lstHotelID, iZoneID, strHotelName,
				iTempPageNo, iPageSize);
		return lstHotelBase;
	}

	/**
	 * 函数功能说明：前台景点菜单显示信息 分页
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人hanxl
	 * @param pageSize
	 * @param pageNumber
	 * @param iZoneID
	 * @param strScenicName
	 * @date 创建日期2021.01.14
	 */
	public HashMap<String, Integer> mapFrontHotelBase(String pageNumber, String pageSize, List<Integer> lstHotelID) {

		HashMap<String, Integer> mapPage = common.getPage(pageNumber, pageSize,
				vHotelBaseRepository.countSearch(lstHotelID));

		return mapPage;
	}

	/**
	 * 函数功能说明： 进入后台酒店信息页面查询酒店详情信息
	 *
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.12.24
	 */
	public VHotelBase findByHotelID(String strHotelID) {
		int iHotelID = Integer.valueOf(strHotelID);
		return vHotelBaseRepository.findByHotelID(iHotelID);
	}

	/**
	 * 函数功能说明：前台首页景区模块显示
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人hanxl
	 * @param
	 * @param lstScenicID
	 * @date 创建日期2021.02.23
	 */
	public List<VHotelBase> findHotel(List<Integer> lstHotelID, int iZoneID) {
		// 查询该区对应的省且最近创建的线路的前8条信息
		List<VHotelBase> lstHotelBase = vHotelBaseRepository.findHotel(lstHotelID, iZoneID);
		return lstHotelBase;
	}
	
	/**
	  * @descr 酒店级联选择器 
	  * @param iZoneID
	  * @return JSON
	  * @throws 
	  * @author liys
	  * @date 2021-6-18
	 */
	public String hotelSelect(int iZoneID) {
		
		List<Map<String,Object>> scenicList = hotelDao.getHotelsByZone(iZoneID);
		for (Map<String, Object> item : scenicList) {
			item.put("children", hotelDao.getPlansByBaseID((int) item.get("value")));
		}
		return JSONObject.toJSONString(scenicList);
	} 
}
